#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :1.9 tcp文件传输客户端.py
# @Time      :2020/7/12 21:54
# @Author    :亮亮
# @说明       :能够接收服务器的文件
# @总结       :
import socket


def main():
    # 1.创建套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 2.输入服务器的ip和port端口
    tcp_ip = input("请输入目标服务器的ip地址：")
    tcp_port = int(input("请输入目标服务器的端口号："))

    # 3.链接服务器
    tcp_socket.connect((tcp_ip, tcp_port))  # 格式为元组，ip为字符串，port为整数
    recv_data = tcp_socket.recvfrom(1024)
    print(recv_data[0].decode("utf-8"))

    while True:

        # 4.获取要下载的文件名
        download_name = input("输入要下载的文件名(若要退出请输入close)：")

        # 判断是否退出客户端
        if download_name == "close":
            break

        # 5.发送想要获取的文件名
        tcp_socket.send(download_name.encode("utf-8"))

        # 6.接收数据
        recv_data = tcp_socket.recvfrom(1024)  # 接收的数据为二进制不用解码

        # TODO 有数据才创建文件
        if recv_data[0]:

            # 7.保存数据到文件中
            with open("[新]" + download_name, "wb") as f:  # 这种方式不用使用f.close()方法关闭文件
                f.write(recv_data[0])  # 传输的为一个元组，故要加[0]否则会报错

            break

        else:
            print("没有要下载的文件:{}".format(download_name))

    # 8.关闭套接字
    tcp_socket.close()


if __name__ == '__main__':
    main()
